package com.xiaoxu.rental.util;

import jakarta.annotation.Resource;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

/**
 * @Title: RedisUtils
 * @Author Mr.Xu
 * @Package com.xiaoxu.rental.util
 * @Date 2024/7/24 20:40
 * @description: Redis配置类
 */
@Component
public class RedisUtils {

    @Resource
    private StringRedisTemplate stringRedisTemplate;


    /**
     * 设置键值对，并设定过期时间。
     *
     * @param key 键，用于在Redis中唯一标识一个值。
     * @param value 值，与键相关联的具体内容。
     * @param timeout 过期时间，单位为分钟。

     * 此方法使用stringRedisTemplate的opsForValue()方法设置给定键的值，并指定一个超时时间，
     * 以便在Redis中存储数据。这有助于缓存数据，提高应用程序的性能。
     */
    public void set(String key,String value,Long timeout){
        stringRedisTemplate.opsForValue().set(key,value,timeout, TimeUnit.MINUTES);
    }

    /**
     * 获取指定键的值。
     *
     * @param key 键，用于在Redis中查找对应的值。
     * @return 与键相关联的值，如果键不存在，则返回null。
     * 此方法使用stringRedisTemplate的opsForValue()方法来检索与给定键相关联的值，
     * 从Redis缓存中获取数据可以提高应用程序的响应速度。
     */
    public String get(String key){
        return stringRedisTemplate.opsForValue().get(key);
    }

    /**
     * 删除指定的键。
     *
     * @param key 要删除的键。
     * 此方法使用stringRedisTemplate的delete()方法来删除Redis中的一个键及其对应的值。
     * 这是管理Redis缓存数据的重要操作，可以用于清理过期或不再需要的数据。
     */
    public void del(String key){
        stringRedisTemplate.delete(key);
    }
}
